Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calcular la precipitación anual para 2015 y 2016 #66

Closed
5 tasks done
vichdzgeo opened this issue Oct 9, 2018 · 1 comment
Closed
5 tasks done

Calcular la precipitación anual para 2015 y 2016 #66

vichdzgeo opened this issue Oct 9, 2018 · 1 comment
Assignees

Comments

@vichdzgeo
Copy link
Collaborator

vichdzgeo commented Oct 9, 2018

  • Buscar información de datos de precipitación para los años dados.
  • Procesar la información obtenida
  • Interpolar los datos de precipitación
  • asociar los datos a nivel de ageb.
  • normalizar los datos.
@vichdzgeo
Copy link
Collaborator Author

vichdzgeo commented Oct 9, 2018

Ruta de trabajo: SIG\desarrollo\sig_megadapt\procesamiento\encharcamientos_escorrentias\precipitacion_15_16\

Datos de precipitación.

La información se obtuvo a partir del portal web de datos abiertos.
la fuente es la siguiente:
datos.gob.mx/busca/dataset/precipitacion

Procesar la información obtenida

Entre los datos descargados:

PRECIP201500.txt Datos anuales de todas las estaciones a nivel nacional para el año 2015
PRECIP201600.txt Datos anuales de todas las estaciones a nivel nacional para el año 2016

extraer los datos de la Ciudad de México y generar shapefiles 1 por año.

  • tp_prec_2015.v1.shp
  • tp_prec_2016.v1.shp

Se extraen valores de elevación a partir del DEM de inegi de 15 metros

Para este proceso se utiliza el plugin Point Sampling Tool

image

NOTA : Es importante seleccionar los campos y la capa raster. solo si se desea conservar los campos de origen y agregar la columna de elevación para los datos.

  • tp_prec_2015.v2.shp
  • tp_prec_2016.v2.shp

Realizar la interpolación con el módulo de grass v.surf.rst

Para cada capa se realizará la interpolación de los datos de precipitación puntuales, el resultado es un raster.
los parámetros dados para el módulo son:
input: tp_prec_2015.shp
mask: dem_15m
zcolumn: DATO
tension:15

image

resultados:

  • /salida/prec_15.tif
  • /salida/prec_16.tif

Extraer los valores promedio de precipitación a nivel de ageb.

Para esta tarea se crea el script agebs_prec.py y se corre para cada año.

import qgis
from qgis.analysis import QgsRasterCalculatorEntry, QgsRasterCalculator
from qgis.core import QgsProject
from qgis.analysis import QgsZonalStatistics
from PyQt4.QtCore import *
from osgeo import gdal, ogr,osr
import sys
import processing
from os.path import join

def extraer_media(vector,p_raster,campo):
    zoneStat= QgsZonalStatistics(vector,p_raster,campo,1,QgsZonalStatistics.Mean)
    zoneStat.calculateStatistics(None)

def copia(vector,salida):
    crs=vector.crs()
    clonarv = QgsVectorFileWriter.writeAsVectorFormat(vector,salida,'utf-8',crs,"ESRI Shapefile")
    

sig_path= "C:/Dropbox (LANCIS)/SIG/desarrollo/sig_megadapt/procesamiento/"
p_ageb_o=sig_path+"encharcamientos_escorrentias/precipitacion_15_16/agebs.shp"
p_ageb_prec_16=sig_path+"encharcamientos_escorrentias/precipitacion_15_16/salida/tp_ageb_prec_16_v1.shp"
v_ageb=QgsVectorLayer(p_ageb_o,"ageb","ogr")
copia(v_ageb,p_ageb_prec_16)
v_ageb_prec_15=QgsVectorLayer(p_ageb_prec_16,"ageb_prec","ogr")
p_prec=sig_path+"encharcamientos_escorrentias/precipitacion_15_16/salida/prec_16.tif"
campo ="prec"

extraer_media(v_ageb_prec_15,p_prec,campo)
print "proceso terminado"

Resultados:

  • salidas/tp_ageb_prec_15_v1.shp
  • salidas/tp_ageb_prec_16_v1.shp

Normalizar los datos

se crea un código en python y qgis (normalizar.py) para la normalización de los datos. obteniendo como resultado:

image

las capas resultantes son:

  • salida/ tp_ageb_prec_15_v2
  • salida/tp_ageb_prec_16_v2

código:


import qgis
from qgis.analysis import *
from qgis.core import QgsProject
from PyQt4.QtCore import *
from osgeo import gdal, ogr,osr
import sys
import processing
from os.path import join


sig_path= "C:/Dropbox (LANCIS)/SIG/desarrollo/sig_megadapt/procesamiento/"
p_ageb_prec_16=sig_path+"encharcamientos_escorrentias/precipitacion_15_16/salida/tp_ageb_prec_15_v1.shp"
vector=QgsVectorLayer(p_ageb_prec_16,"ageb_prec","ogr")
p_salida=sig_path+"encharcamientos_escorrentias/precipitacion_15_16/salida/tp_ageb_prec_15_v2.shp"
campo="precmean"
n_c_norm="prec_n"

def normalizar(vector,p_salida,campo,n_c_norm):
    #crea una copia 
    crs=vector.crs()
    clonarv = QgsVectorFileWriter.writeAsVectorFormat(vector,p_salida,'utf-8',crs,"ESRI Shapefile")
    
    lista=[]
    vector_s=QgsVectorLayer(p_salida,"salida","ogr")
    for f in vector_s.getFeatures():
        lista.append(f[campo])
        
    minimo = min(lista)
    maximo = max(lista)
  
    vector_s.dataProvider().addAttributes([QgsField(n_c_norm,QVariant.Double)])
    print maximo,minimo 
    vector_s.startEditing()
    
    for f in vector_s.getFeatures():
        normalizar=(f[campo]-minimo)/(maximo - minimo)
        f[n_c_norm]=normalizar
        
        vector_s.updateFeature(f)
    
    vector_s.commitChanges()
    


normalizar(vector,p_salida,campo,n_c_norm)

print ("proceso terminado")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants